'''
Created on 04/06/2013

@author: mirta
'''
import unittest
from app import app

from test_helper2 import login
from test_helper2 import elegir_proyecto
from test_helper2 import get_id_when_radio_exist

from app.models.fase import Fase
from app.models.proyecto import Proyecto
from app.models.tipoItem import TipoItem
from app.models.usuario import Usuario

PROYECTO = Proyecto.query.filter_by(nombre='Proyecto pyunit').first()
FASE= Fase.query.filter_by(nombre='Fase 2', proyecto_id=PROYECTO.id).first()
TIPO= TipoItem.query.filter_by(fase_id=FASE.id).first()
USUARIO = Usuario.query.filter_by(nombre='testpy').first()

class TestCase(unittest.TestCase):
    """
    Clase que implementa los test para el caso de uso Fase.
    Utilizamos esta clase para realizar las pruebas de nuestra aplicacion SAP
    """
    
    def setUp(self):
        """
        se llama a este metodo antes de iniciar el test de la aplicacion
        , este metodo crea un nuevo cliente de prueba.
        Se especifican las acciones a ser tomadas antes de iniciar el test
        """
        
        print "Iniciando test"
        #self.db_fd, app.config['DATABASE'] = tempfile.mkstemp()
        self.app = app.test_client()
        self.acceso = login(self.app)
        self.proyecto = elegir_proyecto(self.app, PROYECTO.id) 


    def tearDown(self):
        """
        se llama a este metodo al terminar el test el test de la aplicacion,
        en el se especifican las acciones a ser tomadas al finalizar el test
        """
        print "Terminando test"


    def test_get_all_items(self):
        """
        Controla que se pueda acceder a las fases
        """
        request = self.app.get('/item/administracion/', follow_redirects=True)
        #assert 'Administrador' in request.data
        self.assertEqual(request._status, '200 OK')
        
    
    def test_consultar_item(self):
        """
        Test que verifica si se puede consultar una fase
        """
        #crear_request = self._crear_proyecto(nombre='test proyecto3', presupuesto='2000', lideres=ID_USUARIO)
        print "Consultamos la fase con nombre Fase 1"
        all_request = self._get()
        assert 'Item pyunit' in all_request.data
        #print "Proyecto creado exitosamente"
        _id = get_id_when_radio_exist(all_request, 'Item pyunit')
        path = 'item/consultar/{0}/'.format(_id)
        #print "------------------------------"
        #print path
        borrar_request = self._get(path)
        #print borrar_request.data
        assert 'Consultar Item' in borrar_request.data
 
         
    def _get(self, url ='/item/administracion/'):
        """
        Metodo que obtiene la pagina de administracion de fases
        @param url: url de la pagina de administracion de fases
        """
        return self.app.get(url, follow_redirects=True)
    
if __name__ == '__main__':
    unittest.main()